[アップデート] Amazon EventBridge のパイプ機能(EventBridge Pipes)でもカスタマーマネージドキーを使った暗号化がサポートされました
いわさです。
Amplify Gen 2 をバックエンドとするアプリケーションを最近構築しているのですが、バックエンドコンポーネントの接続に EventBridge Pipes を使ってみようかなというシーンがありました。
EventBridge Pipes というのは 2022 年の re:Invent で登場した EventBridge の機能です。
今回 DynamoDB ストリームをソースとしたかったので EventBridge Pipes 自体は採用出来そうだったのですが、直近のアップデートでカスタマーマネージドキーによる保管時の暗号化をサポートしたことを思い出しました。
従来は AWS マネージドキーで透過的に暗号化されていたのですが、先日のアップデートでカスタマーマネージドキーも使えるようになりました。
これまで EventBridge ではイベントバスでのみカスタマーマネージドキーを選択することが出来ていたのですが、新たにパイプでも使えるようになりました。
で、EventBridge Pipes で何を暗号化するのだ?というところだと思いますが、パラメータなどパイプの一部設定の保存に暗号化を行っているようです。なるほど。
今回私は採用しなくても良かったのですが、せっかくなのでカスタマーマネージドキーを無効化した時にパイプがどのような挙動になるのか観察してみましたので紹介します。
パイプの作成
パイプの作成自体は詳細は割愛します。
今回は DynamoDB ストリームをソースをしたかったので、DynamoDB テーブルでストリームの有効化だけはしておきます。
そうすると EventBridge Pipes でパイプを作成する際に、ソースとして DynamoDB ストリームが選択出来るようになりますので選択します。
ちなみに個別のコンポーネント内では暗号化キーの選択オプションはありませんでした。設定方法は後述します。
フィルタリングのイベントパターンも設定します。実際にはもう少し複雑なフィルターなのですが今回はキーの検証用途なので適当にこんな感じにしました。
強化(エンリッチメント)は私は不要だったのですが、同様にキーの検証のために設定してみましょう。トランスフォーマーなどのエンリッチメントパラメータも設定しておきます。
ターゲットは SNS トピックを設定し、エンリッチメントと同様に追加パラメータとしてトランスフォーマーを設定しておきます。内容はあまり意味のない適当なものです。
カスタマーマネージドキーをパイプに設定する
事前に KMS でカスタマーマネージドキーを作成しておきます。
で、パイプに対するカスタマーマネージドキーの設定ですが、パイプ設定タブに「暗号化」が追加されてまして、こちらから AWS マネージドキーかカスタマーマネージドキーかを選択出来るようになっています。
「別の AWS KMS キーを選択する(詳細)」を選択し、カスタマーマネージドキーの ARN を入力(選択)します。
ちなみに設定したキーは、パイプ詳細下段の暗号化タブからも確認が可能です。
実験:キーを無効化してみる
カスタマーマネージドキーの設定方法は以上なのですが、カスタマーマネージドキーをせっかく設定したのでユーザーがキーを無効化することでパイプから情報を参照できなくなっていることを確認しておきたいところです。やってみましょう。
まずは KMS コンソールからキーを無効化しておきます。
続いてパイプを確認してみましょう。
まず、上段に「The KMS Key associated with this pipe is disabled or inaccessible. We will not be able to display the target parameters, enrichment parameters, or filter criteria until the key is accessible.」というメッセージが表示されるようになりました。
キーが無効化されてるので一部情報表示できませんよと言われてますね。
そして、先ほどまで 4 つのパイプコンポーネントが視覚的に確認出来たのですが、フィルタリングコンポーネント(タブも)が表示されなくなっていますね。
フィルタリングコンポーネントは丸々暗号化されているようで、どういう設定だったのか全く確認ができなくなっています。
ソースコンポーネントの内容やソースパラメータについては引き続き参照可能なようです。ここは暗号化されていないのか。
続いてエンリッチメントですが、こちらは今回だと Lambda を呼び出すようになっていたのですが、どの関数を関連付けしているのかまでは確認が出来ますね。
一方でエンリッチパラメータであるトランスフォームデータについては参照できなくなっています。
最後にターゲットです。こちらもエンリッチメントと同様に対象の SNS トピックなどが確認可能なままでした。
ただし、トランスフォーマーの内容は参照できなくなっていますね。なるほど。
さいごに
本日は Amazon EventBridge のパイプ機能(EventBridge Pipes)でもカスタマーマネージドキーを使った暗号化が先日サポートされていたので、どのあたりが暗号化されるのか、キーの無効化で参照できなくなるのかを確認してみました。
基本的なパイプの構成やコンポーネントについてはカスタマーマネージドキーでは暗号化されていませんが、任意入力が可能なトランスフォーマーやパラメータ、フィルターなどについては暗号化されていることが確認出来ました。
例えばメールアドレスや何かしらのコードでフィルタリングするなど、そういった情報をパイプに含んでいても、カスタマーマネージドキーを使っていれば確実に破棄出来そうですね。